package so.sao.code.service.service;

import so.sao.code.dto.request.TagBatchFormat;
import so.sao.code.service.domain.entity.TagBatchConfig;
import so.sao.code.service.infrastructure.model.vo.TagBatchConfigVO;

public interface TagBatchConfigService {

	public TagBatchConfigVO findConfigByFormatId(Long formatId);

	/**
	 * 发送印刷格式消息给FFW，然后保存印刷格式
	 *
	 * @param user
	 *            portal登录用户
	 * @param tagBatchFormat
	 *            页面设置的印刷格式参数
	 * @return 保存完成的印刷格式对象
	 */
	public TagBatchConfig saveConfig(TagBatchFormat tagBatchFormat);

	/**
	 * 依据批次信息和配置的印刷信息填充字段配置格式，按每行标签个数，将单行数据格式补充完整。
	 * <p>
	 * WARN：当页面可以对每个标签的格式进行设置后，此方法可以停止使用。
	 * <p>
	 * 标准码：每行标签数量n大于1时，页面提交的字段格式为单个标签的格式，需要补充该格式；
	 * <p>
	 * 卷标：每批标签卷数大于1时，页面提交的字段格式为单个标签的格式，需要补充该格式；
	 * <p>
	 * 套标：页面提交的格式是箱码格式、单码格式，需要补充单码格式；
	 * <p>
	 * 双码：页面提交的格式为码1、码2的格式，不需要做补充。
	 *
	 * @param tagBatch
	 *            标签批次，DB中存储的
	 * @param tagCountPerLine
	 *            标准码中标签列数
	 * @param fieldsConfig
	 *            标签字段内容及顺序配置
	 * @return
	 */
	// public default List<String> fulfillFieldsConfig(TagBatch tagBatch, Integer
	// tagCountPerLine,
	// List<String> fieldsConfig) {
	// int fieldsConfigCount = fieldsConfig.size();
	// switch (tagBatch.getType().getValue()) {
	// case 1:// 标准码 格式为 singleFormat
	// for (int i = 0; i < tagCountPerLine - fieldsConfigCount; i++) {
	// fieldsConfig.add(fieldsConfig.get(0));
	// }
	// return fieldsConfig;
	// case 2:// 卷标 格式为 singleRollFormat
	// for (int i = 0; i < tagBatch.getUnitCount() - fieldsConfigCount; i++) {
	// fieldsConfig.add(fieldsConfig.get(0));
	// }
	// return fieldsConfig;
	// case 3:// 套标 格式为 packageFormat,singleFormat
	// for (int i = 0; i < tagBatch.getRatio() - fieldsConfigCount + 1; i++) {
	// fieldsConfig.add(fieldsConfig.get(1));
	// }
	// return fieldsConfig;
	// case 4:// 双码 格式为 singleFormat1,singleFormat2 页面将内外双码的格式设置ok
	// return fieldsConfig;
	//
	// default:
	// throw new RestException(HttpStatus.BAD_REQUEST, CodeMessage.BatchTypeError,
	// tagBatch.getType());
	// }
	// }
}
